import { defineStore } from 'pinia';
import { notReadMessageCount,setReadAll } from '@renderer/api/system/instantMessaging';
export const useIMStore = defineStore('IM', () => {
  const msgCount = ref<{ string, number }>({
    count: 0
  });
  //减少一个
  const reduce = (key: string) => {
    if (msgCount.value[key]) {
      if (msgCount.value[key] > 0) {
        msgCount.value[key] -= 1;
      }
    } else {
      msgCount.value[key] = 0;
    }
  };
  const reduceNumber = (key: string,number:number) => {
    if (msgCount.value[key]) {
      if (msgCount.value[key] > 0) {
        msgCount.value[key] -= number;
      }
    } else {
      msgCount.value[key] = 0;
    }
  };
  //添加一个
  const add = (key: string) => {
    if (msgCount.value[key]) {
      msgCount.value[key] += 1;
    } else {
      msgCount.value[key] = 1;
    }

  };
  //设置数量
  const set = (key: string, count: number) => {
    if (msgCount.value[key]) {
      msgCount.value[key] = count;
    } else {
      msgCount.value[key] = count;
    }

  };

  //从后端查询所有消息类型的数量
  const getMessageNotReadCount = () => {
    notReadMessageCount().then(res => {
      if (res.data) {
        Object.keys(res.data).forEach(key => {
          useIMStore().set(key, res.data[key]);
        });
      }else {
        useIMStore().close()
      }
    })
  };

  //获取首页未读的数量
  const getMineMessageCount = () => {
    let mineCount=0
    Object.keys(msgCount.value).forEach(key => {
      mineCount+=msgCount.value[key];
    });

    return mineCount;
  };

  //将所有消息数量设置为0，全部已读
  const readAll =async () => {
    await setReadAll();
    Object.keys(msgCount.value).forEach(key => {
      set(key, 0);
    });
  };

  //清空
  const close = () => {
    msgCount.value={}

  };

  return {
    msgCount,
    reduce,
    reduceNumber,
    add,
    set,
    readAll,
    close,
    getMineMessageCount,
    getMessageNotReadCount
  };


});


